import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { createPinia } from 'pinia'
import api from '@/utils/request' // 导入配置好的axios实例
import { useUserAuthStore } from '@/stores/userAuth' // 导入用户状态管理

// 按需导入Element Plus组件和样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'

// 导入性能监控工具
import { performanceMonitor, cacheManager } from '@/utils/performance'

// 性能监控
const startTime = performance.now()

// 创建应用实例
const app = createApp(App)
const pinia = createPinia()

// 全局挂载axios
app.config.globalProperties.$http = api

// 全局挂载性能工具
app.config.globalProperties.$performance = performanceMonitor
app.config.globalProperties.$cache = cacheManager

// 性能优化：错误处理
app.config.errorHandler = (err, vm, info) => {
  console.error('Vue Error:', err)
  console.error('Error Info:', info)
  // 可以在这里添加错误上报逻辑
}

// 性能优化：警告处理
app.config.warnHandler = (msg, vm, trace) => {
  console.warn('Vue Warning:', msg)
  console.warn('Warning Trace:', trace)
}

// 注册插件
app.use(pinia)
app.use(ElementPlus)
app.use(router)

// 初始化用户状态
const userAuthStore = useUserAuthStore()
userAuthStore.initFromStorage()

// 挂载应用
app.mount('#app')

// 性能监控：记录启动时间
const endTime = performance.now()
console.log(`🚀 应用启动耗时: ${(endTime - startTime).toFixed(2)}ms`)

// 开发环境性能提示
if (import.meta.env.DEV) {
  console.log('🔧 开发模式已启用')
  console.log('📦 使用 npm run build 进行生产构建')
  console.log('🔍 使用 npm run build:analyze 分析构建包大小')
  console.log('📊 性能监控已启动')
}
